What is safe-regex?
The safe-regex package is a utility for checking if a given regular expression is safe and not susceptible to ReDoS (Regular Expression Denial of Service) attacks. It evaluates the complexity of regular expressions and determines if they can potentially cause exponential time complexity issues.
What are safe-regex's main functionalities?
Safety Check
This feature allows developers to check if a regular expression is safe to use, preventing potential ReDoS attacks. The function returns a boolean indicating whether the regex is considered safe.
const safeRegex = require('safe-regex');
const regex = /a+$/;
console.log(safeRegex(regex)); // Outputs: true or false depending on the safety
Other packages similar to safe-regex
vuln-regex-detector
This package is similar to safe-regex as it also checks for potentially vulnerable regular expressions that could lead to ReDoS attacks. It provides a more comprehensive analysis and supports asynchronous API, making it suitable for larger applications compared to safe-regex.
regex-safe
Like safe-regex, regex-safe is designed to ensure that regular expressions are safe from ReDoS attacks. It offers a simple API to validate regex patterns but does not provide the detailed analysis or support for asynchronous operations found in some other packages.
safe-regex
detect potentially
catastrophic
exponential-time
regular expressions by limiting the
star height to 1
WARNING: This module merely seems to work given all the catastrophic regular
expressions I could find scouring the internet, but I don't have enough of a
background in automata to be absolutely sure that this module will catch all
exponential-time cases.
example
var safe = require('safe-regex');
var regex = process.argv.slice(2).join(' ');
console.log(safe(regex));
$ node safe.js '(x+x+)+y'
false
$ node safe.js '(beep|boop)*'
true
$ node safe.js '(a+){10}'
false
$ node safe.js '\blocation\s*:[^:\n]+\b(Oakland|San Francisco)\b'
true
methods
var safe = require('safe-regex')
var ok = safe(re, opts={})
Return a boolean ok
whether or not the regex re
is safe and not possibly
catastrophic.
re
can be a RegExp
object or just a string.
If the re
is a string and is an invalid regex, returns false
.
opts.limit
- maximum number of allowed repetitions in the entire regex.
Default: 25
.
install
With npm do:
npm install safe-regex
license
MIT